import hashlib
import json
from datetime import datetime

def generate_license_key(expiration_days):
    """生成授权码（基于时间戳和签名）"""
    try:
        # 生成随机UUID作为基础
        import uuid
        base_str = str(uuid.uuid4())

        # 计算签名（使用预共享密钥）
        secret_key = b"dxm_proxy_auth_key_2023"
        payload = f"{base_str}|{expiration_days}".encode()
        signature = hashlib.sha256(secret_key + payload).hexdigest()[:16]

        # 组合授权码
        license_key = f"DXM_{base_str}_{signature}"
        return license_key, base_str
    except Exception as e:
        print(f"⚠️ 授权码生成失败: {str(e)}")
        return None

def create_authorization_file(license_key=None, uuid_str=None):
    """创建授权文件"""
    # 获取授权天数
    try:
        days_input = input("请输入授权天数（默认90天，直接回车使用默认值）: ").strip()
        expiration_days = int(days_input) if days_input else 90
    except ValueError:
        print("⚠️ 输入无效，使用默认90天")
        expiration_days = 90

    # 生成授权码（如果未提供）
    if not license_key:
        license_key, uuid_str = generate_license_key(expiration_days=expiration_days)
        if not license_key:
            return False

    # 获取用户备注信息
    try:
        remark = input("请输入授权备注信息（可选，直接回车跳过）: ").strip()
    except KeyboardInterrupt:
        print("\n❌ 用户取消操作")
        return False

    # 创建授权数据
    auth_data = {
        "license_key": license_key,
        "activation_time": datetime.now().isoformat(),
        "expiration_days": expiration_days,  # 新增授权天数字段
        "remark": remark
    }

    try:
        with open("授权文件.txt", "w", encoding="utf-8") as f:
            json.dump(auth_data, f, indent=2, ensure_ascii=False)
        print(f"✅ 授权文件已创建: {license_key}")
        print(f"📅 授权期限: {expiration_days}天")
        if remark:
            print(f"📝 备注信息: {remark}")
        return True
    except Exception as e:
        print(f"❌ 授权文件创建失败: {str(e)}")
        return False


if __name__ == "__main__":
    # 生成并保存授权文件
    if create_authorization_file():
        print("授权文件创建成功")
    else:
        print("授权文件创建失败")
